package com.forekenow.Demo11;

import java.util.*;

/**
 * Map接口（集合）
 * 1.Map<k,v>  k表示：键（key) v:值(val)   注意：键是不能重复的，一个k对应一个v
 * 2.如何向Map容器中添加元素？ put（k key,v value）  将指定的值与此映射中的指定键关联（可选操作）
 * 3.如何从Map获取元素 get（Object key） 返回指定键所映射的值
 * 4.实现类：HashMap（无序）    TreeMap（具有排序功能，根据key）
 *
 *
 * 特点：可以根据key快速定位我们所需要的对象
 */
public class MapDemo {
    public static void main(String[] args) {
        //创建Map容器
        Map<Integer, String> maps = new HashMap<>();
        TreeMap<Integer, Integer> treeMap = new TreeMap<>();
        //向Map中添加元素
        maps.put(1,"大沙发");
        maps.put(4,"fender");
        maps.put(5,"gibson");
        maps.put(2,"老沙发");
        treeMap.put(1,6);
        treeMap.put(5,9);
        treeMap.put(5,7);
        treeMap.put(4,23);
        //从Map中获取某一个元素
        String name = maps.get(2);
        System.out.println(name);
        Integer integer = treeMap.get(1);
        System.out.println(integer);
        System.out.println("----------------------");
        //如何对Map进行遍历（Map本身不会继承Collection接口·所以不会提供迭代器）
        //Set<Map.Enter<k,v>> entrySet() 返回此映射中包含的映射关系的Set视图
        Set<Map.Entry<Integer,String>> it = maps.entrySet();
        Iterator<Map.Entry<Integer, String>> iterator = it.iterator();
        while (iterator.hasNext()){
           Map.Entry<Integer,String> entry =  iterator.next();
            Integer key = entry.getKey();
            String v = entry.getValue();
            System.out.println(key+"---"+v);
        }
        Set<Map.Entry<Integer, Integer>>  dsai = treeMap.entrySet();
        Iterator<Map.Entry<Integer, Integer>> iterator1 = dsai.iterator();
        while (iterator1.hasNext()){
            Map.Entry<Integer,Integer> entry = iterator1.next();
            Integer key = entry.getKey();
            Integer v = entry.getValue();
            System.out.println(key+"_____"+v);
        }
    }
}
